草庐IT

C++ 模板和指针

全部标签

windows - 给定一个指针,我如何找到它所属的 _HEAP_ENTRY?

我正在学习使用WinDbg,我可能会偏离正轨,但我假设如果我的程序没有使用分页堆,而不是“拥有”的_DPH_HEAP_BLOCK结构一个指向我的分配的指针,我会为分配的数据设置一个_HEAP_ENTRY。给定堆上已分配数据的地址,我如何找到与之对应的_HEAP_ENTRY(在WinDbg中),或者我的问题甚至没有意义?我的问题的根源是我想知道转储中的分配是否已释放或堆是否以某种方式损坏。 最佳答案 !heap-p-a启用页堆后,这会转储出有用的信息(可能包括最后一个分配/释放此堆block的人的调用堆栈)-我认为这可视化了_DPH_

c++ - 开箱即用的 Qt 5 HTML 模板

我想使用一些模板引擎在qt5中生成html文件。有一个www.grantlee.org但我无法编译它(得到CouldNOTfindQtCore.错误)Windows上是否有任何可以执行html模板的qt5构建库?编辑:有人为qt5编译了grantlee吗? 最佳答案 它不是开箱即用的,但我选择使用QCTemplate形式http://code.google.com/p/qctemplate/我用“qt-mustache”做的http://kdemonkey.blogspot.com/2012/08/qt-mustache-templ

c++ - 如何确定我们使用的是真正的 48、56 还是 64 位指针

我正在使用一些技巧在指针中存储额外的信息,目前有些位没有在指针中使用(最高16位),但这在未来会改变。我希望有一种方法来检测我们是否正在编译或运行在将使用超过48位的指针的平台上。相关内容:Whycan'tOSuseentire64-bitsforaddressing?Whyonlythe48-bits?http://developer.amd.com/wordpress/media/2012/10/24593_APM_v2.pdfx86-64、Windows、C/C++需要解决方案,最好是可以在编译时完成的解决方案。其他平台的解决方案也很有趣,但不会标记为正确答案。

c# - 获取鼠标指针下方的窗口句柄,同时忽略半透明窗口

我创建了一个半透明的表单(60%的不透明度和黑色背景),我的应用程序在启动时最大化了整个屏幕。基本上,它会在整个桌面上转换出一种灰色。当用户将鼠标悬停在桌面上的窗口上时,我想获取该窗口的句柄(hWnd)。对我有用的简单方法是:暂时隐藏我的表单(或者,暂时将我的表单的不透明度设置为0.0)调用[GetCursorPos][1]调用[WindowFromPoint][2]再次显示我的表单这种方法的问题是我的表单/屏幕闪烁,这是我不喜欢的。我尝试通过两种方式解决这个问题:我认为应该有一种方法可以通过调用ChildWindowFromPointEx直接在我的窗体下方获取窗口的hWnd。(传入桌

c# - 代码生成器或 T4 模板,它们真的是邪恶的吗?

我听说有人说不应该使用代码生成器和T4模板。这背后的逻辑是,如果您使用生成器生成代码,那么有一种更好、更有效的方法可以通过泛型和模板构建代码。虽然我有点同意上面的说法,但我还没有真正找到有效的方法来构建可以实例化自己的模板。换句话说,我永远做不到:returnnewT();此外,如果我想根据数据库值生成代码,我发现将Microsoft.SqlServer.Management.SMO与T4模板结合使用可以很好地生成大量代码,而无需复制/粘贴或使用resharper。我发现泛型的许多问题也是令我震惊的是有很多开发人员不理解它们。当我确实检查泛型的解决方案时,有时它会变得复杂,因为C#声明

c# - 将指针数组转换为 IntPtr 数组

我被困在一个看似微不足道的任务上,需要你的帮助。我需要编写一个具有以下签名的方法:System.ArrayToIntPtrArray(System.Arraya)其中实际参数可以是任何pointertype的数组(例如int*[]、long**[]、void*[,])并返回具有相同形状的元素数组类型System.IntPtr具有与输入数组的元素相同的数值。问题是如果我事先不知道指针的类型,我不明白如何提取指针的数值。例如,如果我事先知道我的参数始终是void*[]类型,我可以按如下方式编写方法:unsafeIntPtr[]ToIntPtrArray(void*[]a){varresul

c# - Silverlight:TextBlock 没有模板属性?

我想自定义TextBlock的外观。(我想要一个圆角矩形边框。)但我希望能够通过文件app.xaml设置它的模板。但我看到TextBlock没有Template属性。我会使用Label(它确实具有Template属性),但我猜Silverlight不支持Label控件。那么我可以用什么来做到这一点? 最佳答案 我在ScottGuthrie's中找到了针对此文本框圆角边框的解决方案之一。文章:http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-4-using-s

c# - 结构指针(地址)和默认构造函数

获取C#结构的地址会导致默认构造函数调用吗?例如,我得到了这样的结构:[StructLayout(LayoutKind.Sequential,Pack=1)]publicstructHEADER{publicbyteOPCODE;publicbyteLENGTH;}[StructLayout(LayoutKind.Sequential,Pack=1)]publicstructS{publicHEADERHeader;publicintValue;}那么,当然,我不能这样做:Ss;//noconstructorcall,so...varv=s.Value;//compilererror:

c# - 如何在 C# 中编写一个很好的奇特的重复模板模式 (CRTP)

前阵子我想创建我自己的数据映射器,它比普通的ORM简单得多。在这样做的过程中,我发现需要访问我的基类中继承类的类型信息。我的第一个想法是反射,但它太慢了(如果你使用反射,请查看Fasterflect因为它“几乎”消除了反射的性能问题)。所以我求助于一个解决方案,后来我发现它有自己的名字:TheCuriouslyRecurringTemplatePattern。这主要解决了我的问题,但学习如何正确实现此模式有点挑战。我必须解决的两个主要问题是:1)如何让我的消费代码与我的通用对象一起工作,而不需要知道创建对象时使用的通用参数?2)如何在C#中继承静态字段?具有挑战性的部分实际上是解决问题

c# - 为什么 SortedList<TKey, TValue> 不对值使用指针?

所以我正在查看SortedList的实现和执行Add(调用Insert如下所示)真的让我感到惊讶。Add方法进行明显的二进制搜索以确定KVP应该去的索引,但是Insert似乎它可以显着改进(当然是在更大的范围内):privatevoidInsert(intindex,TKeykey,TValuevalue){if(this._size==this.keys.Length)this.EnsureCapacity(this._size+1);if(index如果我没看错,我保留随时犯错的权利,这是一个O(2n)操作。在我看来,值应该用指针来实现。有点像LinkedList与key的值有关,